package com.luojialong.model.vo.user;

import com.luojialong.constant.UserRank;
import com.luojialong.enums.AffairStatus;
import com.luojialong.exception.AffairException;
import com.luojialong.model.domain.User;
import com.luojialong.utils.TimeUtils;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.beans.BeanUtils;

import java.io.Serializable;

@Data
@AllArgsConstructor
@NoArgsConstructor
public class LoginUserVo implements Serializable {
    private static final long serialVersionUID = 1477413669141375475L;
    /**
     *
     */
    private Long id;

    /**
     * 用户的呢称
     */
    private String username;

    /**
     * 用户头像
     */
    private String avatarUrl;

    /**
     * 性别
     */
    private String gender;


    /**
     * 用户角色 0-普通用户,1-管理员
     */
    private String role;
    /**
     * 用户的电话
     */
    private String phone;

    /**
     * 用户邮箱
     */
    private String email;


    /**
     * 用户信息的创建时间
     */
    private String createTime;

    /**
     * 学生,专家->专业, 管理员->那个部门的
     */
    private String major;

    /**
     * 学校,那个学校的专家,负责管理那个学校的管理员
     */
    private String school;


    public static LoginUserVo transferVo(User user) {
        if (user == null) {
            return null;
        }
        LoginUserVo userVo = new LoginUserVo();
        BeanUtils.copyProperties(user, userVo);
        userVo.setCreateTime(TimeUtils.transferDateFormat(user.getCreateTime()));
        if (UserRank.ROLES.length <= user.getRole()) {
            throw new AffairException(AffairStatus.NOT_ADMIN, "没有这个角色,请联系管理员,实现对角色的添加");
        }
        userVo.setRole(UserRank.ROLES[user.getRole()]);
        if (user.getGender() != null) {
            userVo.setGender(user.getGender() == 0 ? "女" : "男");
        }
        return userVo;
    }
}
